package com.dh.blog.handler;

import java.io.InputStream;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import com.dh.blog.handler.xml.Catalog;
import com.dh.blog.handler.xml.XmlNode;

/**
 * handler api of aritcal
 * @author David
 *
 */
public interface ArticalHandler {
	/**
	 * 通过input流创建目录
	 * @param source
	 * @param anchor 是否添加锚属性
	 * @return
	 */
	public Catalog<XmlNode> createCatalog(InputStream source,boolean anchor);
	/**
	 * 通过document类创建目录
	 * @param document
	 * @param anchor 是否添加锚属性
	 * @return
	 */
	public Catalog<XmlNode> createCatalog(Document document,boolean anchor);
	/**
	 * input流解析成document类
	 * @param in
	 * @return
	 */
	public Document resolveToDocument(InputStream in);
	/**
	 * 添加元素结点
	 * @param doc
	 * @param el
	 */
	public void addElement(Document doc,Element el);
	/**
	 * 为文章指定标签添加锚点
	 * @param el
	 */
	public void anchor(Document doc,String tag);
	/**
	 * 存储并更新文章
	 * @param doc
	 * @param path
	 */
	public void saveAndUpdate(Document doc,String path);
	/**
	 * 从文档中解析图片URL
	 * @param doc
	 * @return
	 */
	public String[] resolveToImgURLs(Document doc);
}
